home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / libxml2 / libxml / valid.h < prev    next >
C/C++ Source or Header  |  2006-04-25  |  14KB  |  459 lines

  1. /*
  2.  * Summary: The DTD validation
  3.  * Description: API for the DTD handling and the validity checking
  4.  *
  5.  * Copy: See Copyright for the status of this software.
  6.  *
  7.  * Author: Daniel Veillard
  8.  */
  9.  
  10.  
  11. #ifndef __XML_VALID_H__
  12. #define __XML_VALID_H__
  13.  
  14. #include <libxml/xmlversion.h>
  15. #include <libxml/xmlerror.h>
  16. #include <libxml/tree.h>
  17. #include <libxml/list.h>
  18. #include <libxml/xmlautomata.h>
  19. #include <libxml/xmlregexp.h>
  20.  
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24.  
  25. /*
  26.  * Validation state added for non-determinist content model.
  27.  */
  28. typedef struct _xmlValidState xmlValidState;
  29. typedef xmlValidState *xmlValidStatePtr;
  30.  
  31. /**
  32.  * xmlValidityErrorFunc:
  33.  * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
  34.  *        but comes from ctxt->userData (which normally contains such
  35.  *        a pointer); ctxt->userData can be changed by the user.
  36.  * @msg:  the string to format *printf like vararg
  37.  * @...:  remaining arguments to the format
  38.  *
  39.  * Callback called when a validity error is found. This is a message
  40.  * oriented function similar to an *printf function.
  41.  */
  42. typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx,
  43.                  const char *msg,
  44.                  ...);
  45.  
  46. /**
  47.  * xmlValidityWarningFunc:
  48.  * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
  49.  *        but comes from ctxt->userData (which normally contains such
  50.  *        a pointer); ctxt->userData can be changed by the user.
  51.  * @msg:  the string to format *printf like vararg
  52.  * @...:  remaining arguments to the format
  53.  *
  54.  * Callback called when a validity warning is found. This is a message
  55.  * oriented function similar to an *printf function.
  56.  */
  57. typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx,
  58.                    const char *msg,
  59.                    ...);
  60.  
  61. #ifdef IN_LIBXML
  62. /**
  63.  * XML_CTXT_FINISH_DTD_0:
  64.  *
  65.  * Special value for finishDtd field when embedded in an xmlParserCtxt
  66.  */
  67. #define XML_CTXT_FINISH_DTD_0 0xabcd1234
  68. /**
  69.  * XML_CTXT_FINISH_DTD_1:
  70.  *
  71.  * Special value for finishDtd field when embedded in an xmlParserCtxt
  72.  */
  73. #define XML_CTXT_FINISH_DTD_1 0xabcd1235
  74. #endif
  75.  
  76. /*
  77.  * xmlValidCtxt:
  78.  * An xmlValidCtxt is used for error reporting when validating.
  79.  */
  80. typedef struct _xmlValidCtxt xmlValidCtxt;
  81. typedef xmlValidCtxt *xmlValidCtxtPtr;
  82. struct _xmlValidCtxt {
  83.     void *userData;            /* user specific data block */
  84.     xmlValidityErrorFunc error;        /* the callback in case of errors */
  85.     xmlValidityWarningFunc warning;    /* the callback in case of warning */
  86.  
  87.     /* Node analysis stack used when validating within entities */
  88.     xmlNodePtr         node;          /* Current parsed Node */
  89.     int                nodeNr;        /* Depth of the parsing stack */
  90.     int                nodeMax;       /* Max depth of the parsing stack */
  91.     xmlNodePtr        *nodeTab;       /* array of nodes */
  92.  
  93.     unsigned int     finishDtd;       /* finished validating the Dtd ? */
  94.     xmlDocPtr              doc;       /* the document */
  95.     int                  valid;       /* temporary validity check result */
  96.  
  97.     /* state state used for non-determinist content validation */
  98.     xmlValidState     *vstate;        /* current state */
  99.     int                vstateNr;      /* Depth of the validation stack */
  100.     int                vstateMax;     /* Max depth of the validation stack */
  101.     xmlValidState     *vstateTab;     /* array of validation states */
  102.  
  103. #ifdef LIBXML_REGEXP_ENABLED
  104.     xmlAutomataPtr            am;     /* the automata */
  105.     xmlAutomataStatePtr    state;     /* used to build the automata */
  106. #else
  107.     void                     *am;
  108.     void                  *state;
  109. #endif
  110. };
  111.  
  112. /*
  113.  * ALL notation declarations are stored in a table.
  114.  * There is one table per DTD.
  115.  */
  116.  
  117. typedef struct _xmlHashTable xmlNotationTable;
  118. typedef xmlNotationTable *xmlNotationTablePtr;
  119.  
  120. /*
  121.  * ALL element declarations are stored in a table.
  122.  * There is one table per DTD.
  123.  */
  124.  
  125. typedef struct _xmlHashTable xmlElementTable;
  126. typedef xmlElementTable *xmlElementTablePtr;
  127.  
  128. /*
  129.  * ALL attribute declarations are stored in a table.
  130.  * There is one table per DTD.
  131.  */
  132.  
  133. typedef struct _xmlHashTable xmlAttributeTable;
  134. typedef xmlAttributeTable *xmlAttributeTablePtr;
  135.  
  136. /*
  137.  * ALL IDs attributes are stored in a table.
  138.  * There is one table per document.
  139.  */
  140.  
  141. typedef struct _xmlHashTable xmlIDTable;
  142. typedef xmlIDTable *xmlIDTablePtr;
  143.  
  144. /*
  145.  * ALL Refs attributes are stored in a table.
  146.  * There is one table per document.
  147.  */
  148.  
  149. typedef struct _xmlHashTable xmlRefTable;
  150. typedef xmlRefTable *xmlRefTablePtr;
  151.  
  152. /* Notation */
  153. XMLPUBFUN xmlNotationPtr XMLCALL        
  154.         xmlAddNotationDecl    (xmlValidCtxtPtr ctxt,
  155.                      xmlDtdPtr dtd,
  156.                      const xmlChar *name,
  157.                      const xmlChar *PublicID,
  158.                      const xmlChar *SystemID);
  159. #ifdef LIBXML_TREE_ENABLED
  160. XMLPUBFUN xmlNotationTablePtr XMLCALL 
  161.         xmlCopyNotationTable    (xmlNotationTablePtr table);
  162. #endif /* LIBXML_TREE_ENABLED */
  163. XMLPUBFUN void XMLCALL            
  164.         xmlFreeNotationTable    (xmlNotationTablePtr table);
  165. #ifdef LIBXML_OUTPUT_ENABLED
  166. XMLPUBFUN void XMLCALL            
  167.         xmlDumpNotationDecl    (xmlBufferPtr buf,
  168.                      xmlNotationPtr nota);
  169. XMLPUBFUN void XMLCALL            
  170.         xmlDumpNotationTable    (xmlBufferPtr buf,
  171.                      xmlNotationTablePtr table);
  172. #endif /* LIBXML_OUTPUT_ENABLED */
  173.  
  174. /* Element Content */
  175. /* the non Doc version are being deprecated */
  176. XMLPUBFUN xmlElementContentPtr XMLCALL 
  177.         xmlNewElementContent    (const xmlChar *name,
  178.                      xmlElementContentType type);
  179. XMLPUBFUN xmlElementContentPtr XMLCALL 
  180.         xmlCopyElementContent    (xmlElementContentPtr content);
  181. XMLPUBFUN void XMLCALL             
  182.         xmlFreeElementContent    (xmlElementContentPtr cur);
  183. /* the new versions with doc argument */
  184. XMLPUBFUN xmlElementContentPtr XMLCALL 
  185.         xmlNewDocElementContent    (xmlDocPtr doc,
  186.                      const xmlChar *name,
  187.                      xmlElementContentType type);
  188. XMLPUBFUN xmlElementContentPtr XMLCALL 
  189.         xmlCopyDocElementContent(xmlDocPtr doc,
  190.                      xmlElementContentPtr content);
  191. XMLPUBFUN void XMLCALL             
  192.         xmlFreeDocElementContent(xmlDocPtr doc,
  193.                      xmlElementContentPtr cur);
  194. XMLPUBFUN void XMLCALL             
  195.         xmlSnprintfElementContent(char *buf,
  196.                      int size,
  197.                                      xmlElementContentPtr content,
  198.                      int englob);
  199. #ifdef LIBXML_OUTPUT_ENABLED
  200. /* DEPRECATED */
  201. XMLPUBFUN void XMLCALL             
  202.         xmlSprintfElementContent(char *buf,
  203.                                      xmlElementContentPtr content,
  204.                      int englob);
  205. #endif /* LIBXML_OUTPUT_ENABLED */
  206. /* DEPRECATED */
  207.  
  208. /* Element */
  209. XMLPUBFUN xmlElementPtr XMLCALL       
  210.         xmlAddElementDecl    (xmlValidCtxtPtr ctxt,
  211.                      xmlDtdPtr dtd,
  212.                      const xmlChar *name,
  213.                      xmlElementTypeVal type,
  214.                      xmlElementContentPtr content);
  215. #ifdef LIBXML_TREE_ENABLED
  216. XMLPUBFUN xmlElementTablePtr XMLCALL 
  217.         xmlCopyElementTable    (xmlElementTablePtr table);
  218. #endif /* LIBXML_TREE_ENABLED */
  219. XMLPUBFUN void XMLCALL           
  220.         xmlFreeElementTable    (xmlElementTablePtr table);
  221. #ifdef LIBXML_OUTPUT_ENABLED
  222. XMLPUBFUN void XMLCALL           
  223.         xmlDumpElementTable    (xmlBufferPtr buf,
  224.                      xmlElementTablePtr table);
  225. XMLPUBFUN void XMLCALL           
  226.         xmlDumpElementDecl    (xmlBufferPtr buf,
  227.                      xmlElementPtr elem);
  228. #endif /* LIBXML_OUTPUT_ENABLED */
  229.  
  230. /* Enumeration */
  231. XMLPUBFUN xmlEnumerationPtr XMLCALL 
  232.         xmlCreateEnumeration    (const xmlChar *name);
  233. XMLPUBFUN void XMLCALL           
  234.         xmlFreeEnumeration    (xmlEnumerationPtr cur);
  235. #ifdef LIBXML_TREE_ENABLED
  236. XMLPUBFUN xmlEnumerationPtr XMLCALL  
  237.         xmlCopyEnumeration    (xmlEnumerationPtr cur);
  238. #endif /* LIBXML_TREE_ENABLED */
  239.  
  240. /* Attribute */
  241. XMLPUBFUN xmlAttributePtr XMLCALL        
  242.         xmlAddAttributeDecl    (xmlValidCtxtPtr ctxt,
  243.                      xmlDtdPtr dtd,
  244.                      const xmlChar *elem,
  245.                      const xmlChar *name,
  246.                      const xmlChar *ns,
  247.                      xmlAttributeType type,
  248.                      xmlAttributeDefault def,
  249.                      const xmlChar *defaultValue,
  250.                      xmlEnumerationPtr tree);
  251. #ifdef LIBXML_TREE_ENABLED
  252. XMLPUBFUN xmlAttributeTablePtr XMLCALL 
  253.         xmlCopyAttributeTable  (xmlAttributeTablePtr table);
  254. #endif /* LIBXML_TREE_ENABLED */
  255. XMLPUBFUN void XMLCALL             
  256.         xmlFreeAttributeTable  (xmlAttributeTablePtr table);
  257. #ifdef LIBXML_OUTPUT_ENABLED
  258. XMLPUBFUN void XMLCALL             
  259.         xmlDumpAttributeTable  (xmlBufferPtr buf,
  260.                     xmlAttributeTablePtr table);
  261. XMLPUBFUN void XMLCALL             
  262.         xmlDumpAttributeDecl   (xmlBufferPtr buf,
  263.                     xmlAttributePtr attr);
  264. #endif /* LIBXML_OUTPUT_ENABLED */
  265.  
  266. /* IDs */
  267. XMLPUBFUN xmlIDPtr XMLCALL    
  268.         xmlAddID           (xmlValidCtxtPtr ctxt,
  269.                     xmlDocPtr doc,
  270.                     const xmlChar *value,
  271.                     xmlAttrPtr attr);
  272. XMLPUBFUN void XMLCALL        
  273.         xmlFreeIDTable           (xmlIDTablePtr table);
  274. XMLPUBFUN xmlAttrPtr XMLCALL    
  275.         xmlGetID           (xmlDocPtr doc,
  276.                     const xmlChar *ID);
  277. XMLPUBFUN int XMLCALL        
  278.         xmlIsID               (xmlDocPtr doc,
  279.                     xmlNodePtr elem,
  280.                     xmlAttrPtr attr);
  281. XMLPUBFUN int XMLCALL        
  282.         xmlRemoveID           (xmlDocPtr doc, 
  283.                     xmlAttrPtr attr);
  284.  
  285. /* IDREFs */
  286. XMLPUBFUN xmlRefPtr XMLCALL    
  287.         xmlAddRef           (xmlValidCtxtPtr ctxt,
  288.                     xmlDocPtr doc,
  289.                     const xmlChar *value,
  290.                     xmlAttrPtr attr);
  291. XMLPUBFUN void XMLCALL        
  292.         xmlFreeRefTable           (xmlRefTablePtr table);
  293. XMLPUBFUN int XMLCALL        
  294.         xmlIsRef           (xmlDocPtr doc,
  295.                     xmlNodePtr elem,
  296.                     xmlAttrPtr attr);
  297. XMLPUBFUN int XMLCALL        
  298.         xmlRemoveRef           (xmlDocPtr doc, 
  299.                     xmlAttrPtr attr);
  300. XMLPUBFUN xmlListPtr XMLCALL    
  301.         xmlGetRefs           (xmlDocPtr doc,
  302.                     const xmlChar *ID);
  303.  
  304. /**
  305.  * The public function calls related to validity checking.
  306.  */
  307. #ifdef LIBXML_VALID_ENABLED
  308. /* Allocate/Release Validation Contexts */
  309. XMLPUBFUN xmlValidCtxtPtr XMLCALL        
  310.         xmlNewValidCtxt(void);
  311. XMLPUBFUN void XMLCALL            
  312.         xmlFreeValidCtxt(xmlValidCtxtPtr);
  313.  
  314. XMLPUBFUN int XMLCALL        
  315.         xmlValidateRoot        (xmlValidCtxtPtr ctxt,
  316.                      xmlDocPtr doc);
  317. XMLPUBFUN int XMLCALL        
  318.         xmlValidateElementDecl    (xmlValidCtxtPtr ctxt,
  319.                      xmlDocPtr doc,
  320.                                  xmlElementPtr elem);
  321. XMLPUBFUN xmlChar * XMLCALL    
  322.         xmlValidNormalizeAttributeValue(xmlDocPtr doc,
  323.                      xmlNodePtr elem,
  324.                      const xmlChar *name,
  325.                      const xmlChar *value);
  326. XMLPUBFUN xmlChar * XMLCALL    
  327.         xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
  328.                      xmlDocPtr doc,
  329.                      xmlNodePtr elem,
  330.                      const xmlChar *name,
  331.                      const xmlChar *value);
  332. XMLPUBFUN int XMLCALL        
  333.         xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
  334.                      xmlDocPtr doc,
  335.                                  xmlAttributePtr attr);
  336. XMLPUBFUN int XMLCALL        
  337.         xmlValidateAttributeValue(xmlAttributeType type,
  338.                      const xmlChar *value);
  339. XMLPUBFUN int XMLCALL        
  340.         xmlValidateNotationDecl    (xmlValidCtxtPtr ctxt,
  341.                      xmlDocPtr doc,
  342.                                  xmlNotationPtr nota);
  343. XMLPUBFUN int XMLCALL        
  344.         xmlValidateDtd        (xmlValidCtxtPtr ctxt,
  345.                      xmlDocPtr doc,
  346.                      xmlDtdPtr dtd);
  347. XMLPUBFUN int XMLCALL        
  348.         xmlValidateDtdFinal    (xmlValidCtxtPtr ctxt,
  349.                      xmlDocPtr doc);
  350. XMLPUBFUN int XMLCALL        
  351.         xmlValidateDocument    (xmlValidCtxtPtr ctxt,
  352.                      xmlDocPtr doc);
  353. XMLPUBFUN int XMLCALL        
  354.         xmlValidateElement    (xmlValidCtxtPtr ctxt,
  355.                      xmlDocPtr doc,
  356.                      xmlNodePtr elem);
  357. XMLPUBFUN int XMLCALL        
  358.         xmlValidateOneElement    (xmlValidCtxtPtr ctxt,
  359.                      xmlDocPtr doc,
  360.                                  xmlNodePtr elem);
  361. XMLPUBFUN int XMLCALL    
  362.         xmlValidateOneAttribute    (xmlValidCtxtPtr ctxt,
  363.                      xmlDocPtr doc,
  364.                      xmlNodePtr    elem,
  365.                      xmlAttrPtr attr,
  366.                      const xmlChar *value);
  367. XMLPUBFUN int XMLCALL        
  368.         xmlValidateOneNamespace    (xmlValidCtxtPtr ctxt,
  369.                      xmlDocPtr doc,
  370.                      xmlNodePtr elem,
  371.                      const xmlChar *prefix,
  372.                      xmlNsPtr ns,
  373.                      const xmlChar *value);
  374. XMLPUBFUN int XMLCALL        
  375.         xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
  376.                      xmlDocPtr doc);
  377. #endif /* LIBXML_VALID_ENABLED */
  378.  
  379. #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
  380. XMLPUBFUN int XMLCALL        
  381.         xmlValidateNotationUse    (xmlValidCtxtPtr ctxt,
  382.                      xmlDocPtr doc,
  383.                      const xmlChar *notationName);
  384. #endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */
  385.  
  386. XMLPUBFUN int XMLCALL        
  387.         xmlIsMixedElement    (xmlDocPtr doc,
  388.                      const xmlChar *name);
  389. XMLPUBFUN xmlAttributePtr XMLCALL    
  390.         xmlGetDtdAttrDesc    (xmlDtdPtr dtd,
  391.                      const xmlChar *elem,
  392.                      const xmlChar *name);
  393. XMLPUBFUN xmlAttributePtr XMLCALL    
  394.         xmlGetDtdQAttrDesc    (xmlDtdPtr dtd,
  395.                      const xmlChar *elem,
  396.                      const xmlChar *name,
  397.                      const xmlChar *prefix);
  398. XMLPUBFUN xmlNotationPtr XMLCALL    
  399.         xmlGetDtdNotationDesc    (xmlDtdPtr dtd,
  400.                      const xmlChar *name);
  401. XMLPUBFUN xmlElementPtr XMLCALL    
  402.         xmlGetDtdQElementDesc    (xmlDtdPtr dtd,
  403.                      const xmlChar *name,
  404.                      const xmlChar *prefix);
  405. XMLPUBFUN xmlElementPtr XMLCALL    
  406.         xmlGetDtdElementDesc    (xmlDtdPtr dtd,
  407.                      const xmlChar *name);
  408.  
  409. #ifdef LIBXML_VALID_ENABLED
  410.  
  411. XMLPUBFUN int XMLCALL        
  412.         xmlValidGetPotentialChildren(xmlElementContent *ctree,
  413.                      const xmlChar **names,
  414.                      int *len,
  415.                      int max);
  416.  
  417. XMLPUBFUN int XMLCALL        
  418.         xmlValidGetValidElements(xmlNode *prev,
  419.                      xmlNode *next,
  420.                      const xmlChar **names,
  421.                      int max);
  422. XMLPUBFUN int XMLCALL        
  423.         xmlValidateNameValue    (const xmlChar *value);
  424. XMLPUBFUN int XMLCALL        
  425.         xmlValidateNamesValue    (const xmlChar *value);
  426. XMLPUBFUN int XMLCALL        
  427.         xmlValidateNmtokenValue    (const xmlChar *value);
  428. XMLPUBFUN int XMLCALL        
  429.         xmlValidateNmtokensValue(const xmlChar *value);
  430.  
  431. #ifdef LIBXML_REGEXP_ENABLED
  432. /*
  433.  * Validation based on the regexp support
  434.  */
  435. XMLPUBFUN int XMLCALL        
  436.         xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
  437.                      xmlElementPtr elem);
  438.  
  439. XMLPUBFUN int XMLCALL        
  440.         xmlValidatePushElement    (xmlValidCtxtPtr ctxt,
  441.                      xmlDocPtr doc,
  442.                      xmlNodePtr elem,
  443.                      const xmlChar *qname);
  444. XMLPUBFUN int XMLCALL        
  445.         xmlValidatePushCData    (xmlValidCtxtPtr ctxt,
  446.                      const xmlChar *data,
  447.                      int len);
  448. XMLPUBFUN int XMLCALL        
  449.         xmlValidatePopElement    (xmlValidCtxtPtr ctxt,
  450.                      xmlDocPtr doc,
  451.                      xmlNodePtr elem,
  452.                      const xmlChar *qname);
  453. #endif /* LIBXML_REGEXP_ENABLED */
  454. #endif /* LIBXML_VALID_ENABLED */
  455. #ifdef __cplusplus
  456. }
  457. #endif
  458. #endif /* __XML_VALID_H__ */
  459.